最近項目上需要用到 LED 子系統,在嵌入式 Linux 里面點個燈還是比較簡單的,只要在某個燈對應的目錄里,向相應文件寫入特定值,就可以讓 LED 亮/滅/閃爍。
# echo 1 > /sys/class/leds/green/brightness // 點亮 LED # echo 0 > /sys/class/leds/green/brightness // 熄滅 LED # echo heartbeat > /sys/class/leds/green/trigger // 讓 LED 像心跳一樣閃爍
led trigger 當然,項目里用到的點燈功能要比上面介紹的稍微復雜一點,類似于硬盤燈,即對硬盤進行讀寫操作時,LED 會閃爍。 隱隱約約感覺到,這個功能應該和 trigger 文件有關系,因為在 cat 這個文件時,里面有 mmc0 這個字眼。 那就往 trigger 里面寫個 mmc0 看看會有什么效果呢
# echo mmc0 > /sys/class/leds/green/trigger # cat /sys/class/leds/green/trigger none rc-feedback kbd-scrolllock kbd-numlock kbd-capslock kbd-kanalock kbd-shiftlock kbd-altgrlock kbd-ctrllock kbd-altlock kbd-shiftllock kbd-shiftrlock kbd-ctrlllock kbd-ctrlrlock [mmc0] heartbeat default-on ir-power-click axp20x-usb-online
向磁盤中寫入數據 # touch aa | sync 1 神奇地發現,每執行一次命令向磁盤中寫入數據,板子上綠色的燈就會閃爍一次,神奇。 通過查閱資料,了解到這是 LED 觸發器相關的功能。一時間,想到
為什么往 tigger 里寫入 mmc0,就能讓 LED 變成硬盤燈?
為什么往 brightness 文件里寫入 1/0,就能控制燈的亮滅?
為什么往 trigger 文件里面寫入 timer,LED 就會閃爍,同時會產生兩個文件 delay_on、delay_off,并能用它們控制燈的閃爍頻率?
等等
種種疑惑涌上心頭,急切地想了解這些功能背后的原理
原理浮山县 | 双流县 | 嫩江县 | 昌乐县 | 霍山县 | 罗平县 |
吉首市 | 南召县 | 淳化县 | 湄潭县 | 长丰县 | 华亭县 |
靖州 | 麟游县 | 徐州市 | 永泰县 | 东丽区 | 晴隆县 |